﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HS {
    class Soldier:Character {
        /*Atibutos*/
        /***********************************************************************************/
        private char type;      //Indica el tipo de soldado que es: P: Pistolero, F: Lanzallamas, B: Bazuquero
        private int kills;      //número de victimas
        private int moneyDeath; //dinero por muerte
        private int scope;      //indica el alcance de Celdas de disparo que tiene.
        private Weapon myWeapon;
        private int existenceCost;

        /*Constructores*/
        /***********************************************************************************/
        public Soldier() {
            setLife(100);
            kills = 0;
            setX(0);
            setY(0);
        }
        public Soldier(char type, int posY, int posX) {
            //Vinculando a arma:
            myWeapon = new Weapon('1', type);

            //Características del Soldado:
            setX(posX);
            setY(posY);
            setType(type);
            setKills(0);

            if ((type == 'p') || (type == 'P')) {
                setName("Pistolero");
                setLife(80);
                setAccuracy(0.8);    //porcentaje de precisión
                setDescription("Este tipo de Soldado, solo usará una pistola");
                setMoneyDeath(80);
                setScope(5);
                setExistenceCost(150);
                setMyWeapon(myWeapon);
            }

            if ((type == 'f') || (type == 'F')) {
                setName("LanzaFuego");
                setLife(200);
                setAccuracy(1);    //porcentaje de precisión
                setDescription("Este tipo de Soldado, solo usará un lanzallamas para combatir, tiene muy buena precisión.");
                setMoneyDeath(100);
                setScope(2);
                setExistenceCost(200);
                setMyWeapon(myWeapon);
            }

            if ((type == 'b') || (type == 'B')) {
                    setName("Bazuquero");
                    setLife(300);
                    setAccuracy(0.7);    //porcentaje de precisión
                    setDescription("Este tipo de Soldado, usará una bazuca como arma para defender el bunker de los invasores");
                    setMoneyDeath(130);
                    setScope(8);
                    setExistenceCost(250);
                    setMyWeapon(myWeapon);
             }
        }
        

        /*Metodos Sets y Gets*/
        /***********************************************************************************/
        public char getType() {
            return type;
        }
        public void setType(char type) {
            this.type = type;
        }
        public int getKills() {
            return kills;
        }
        public void setKills(int kills) {
            this.kills = kills;
        }
        public int getMoneyDeath() {
            return moneyDeath;
        }
        public void setMoneyDeath(int moneyDeath) {
            this.moneyDeath = moneyDeath;
        }
        public int getScope() {
            return scope;
        }
        public void setScope(int scope) {
            this.scope = scope;
        }
        public Weapon getMyWeapon() {
            return myWeapon;
        }
        public void setMyWeapon(Weapon aweapon) {
            this.myWeapon = aweapon;
        }
        public int getExistenceCost() {
            return existenceCost;
        }
        public void setExistenceCost(int existenceCost) {
            this.existenceCost = existenceCost;
        }

        /*Metodos Otros*/
        /***********************************************************************************/
        void move(char opcMov) {
            //Coordenadas Abajo y Derecha POSITIVO; Arriba e Izquierda NEGATIVO.
            int x, y;

            //Mueve Arriba:
            if ((opcMov == 'W') || (opcMov == 'w')) {
                y = this.getY() - 1;
                this.setY(y);
            }
            //Mueve Abajo:
            if ((opcMov == 'S') || (opcMov == 's')) {
                y = this.getY() + 1;
                this.setY(y);
            }
            //Mueve Derecha:
            if ((opcMov == 'D') || (opcMov == 'd')) {
                x = this.getX() + 1;
                this.setX(x);
            }
            //Mueve Izquierda:
            if ((opcMov == 'A') || (opcMov == 'a')) {
                x = this.getX() - 1;
                this.setX(x);
            }
        }

        void pideSoldado() {

        }

        

        

        ///*-----------------------------------------|DESTROYER|-------------------------------------------*/
        //~Soldier()
        //{
        //    setLife(0);
        //    System.Console.WriteLine("El soldado calló..! TT_TT");
        //    //CONTROLAR ESTA PARTE, YA QUE SE PUEDE HACER UN GETMONEYDEATH POR TIPO, Y ESO SUMARLO 
        //    //AL CONTADOR DE DINERO POR NIVEL

        //    //¡¡¡¡   E  D  I  T  A  R  !!!!

        //    if (type == 1)
        //        moneyDeath = 50;
        //    if (type == 2)
        //        moneyDeath = 100;
        //    if (type == 3)
        //        moneyDeath = 150;
        //}
    }
}
